/**
	License:		Artistic license 2.0 (see license.txt, also available online at http://www.perlfoundation.org/artistic_license_2_0)
	Authors:		OrbitalLab (http://www.orbitallab.ru/moonglide/), 2007-2009

	File:			GuiSkin.d
	Description:	skin/style system for gui
	Date:			17.05.2008 by Digited
*/
module moonglide.gui.GuiSkin;

import
	moonglide.math.MoonMath,
	moonglide.util.MoonUtil,

	moonglide.core.Events,
	moonglide.core.engobjects.EngRawData,

	moonglide.gui.GuiControl,
	moonglide.gui.GuiCursor,

	moonglide.gui.animators.CursorAnimator;


//============================================================
/// basic gui skin class - strategy for controls, called at scenemanager onrender pass
//============================================================
class CGuiSkin : IEventListener, IEventGenerator
{
	mixin TEventGenerator;

	public:
		//============================================================
		/// control rendering entry point
		//============================================================
		void Process( CGuiControl control, bool render )
		in
		{
			moonAssert( control !is null, "control is null!", __FILE__, __LINE__ );
		}
		body
		{
			// rendering stuff
			return control.data;
		}

		//============================================================
		/// cursor rendering
		//============================================================
		void Process( CGuiCursor cursor, bool render )
		in
		{
			moonAssert( cursor !is null, "cursor is null", __FILE__, __LINE__ );
		}
		body
		{
			// cursor rendering stuff
			SRawData data;
			return data;
		}

		//============================================================
		/// onCreate - init stuff for controls' look
		//============================================================
		void onCreate( CGuiControl control )
		{
			//
		}

		void onCreate( CGuiCursor cursor )
		{
			//
		}

		void onEventCallback( CEvent event, IEventGenerator sender ) {}
		void onEventReceive( CEvent event, IEventSender sender ) {}
}
